package com.zjsru.plan2025.oneday;

import java.util.HashSet;
import java.util.Set;

/**
 * 3396. 使数组元素互不相同所需的最少操作次数
 *
 * @Author: cookLee
 * @Date: 2025-04-08
 */
public class MinimumOperations {

    /**
     * 从数组的开头移除 3 个元素。如果数组中元素少于 3 个，则移除所有剩余元素。
     * <p>
     * \
     * 输入： nums = [1,2,3,4,2,3,3,5,7]
     * 输出： 2
     * 解释：
     * 第一次操作：移除前 3 个元素，数组变为 [4, 2, 3, 3, 5, 7]。
     * 第二次操作：再次移除前 3 个元素，数组变为 [3, 5, 7]，此时数组中的元素互不相同。
     * 因此，答案是 2。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        MinimumOperations minimumOperations = new MinimumOperations();
        int[] nums = new int[]{1, 2, 3, 4, 2, 3, 3, 5, 7};
        System.out.println(minimumOperations.minimumOperations(nums));
    }

    public int minimumOperations(int[] nums) {
        int ans = 0;
        for (int i = 0; i < nums.length; i += 3) {
            if (this.helper(nums, i)) {
                return ans;
            }
            ans++;
        }
        return ans;
    }

    private boolean helper(int[] nums, int index) {
        Set<Integer> set = new HashSet<>();
        for (int i = index; i < nums.length; i++) {
            if (set.contains(nums[i])) {
                return false;
            }
            set.add(nums[i]);
        }
        return true;
    }


}
